<!DOCTYPE html>
<html>
<!--
Copyright 2010 The Closure Library Authors. All Rights Reserved.

Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<head>
  <title>goog.ui.ColorMenuButton</title>
  <script src="../base.js"></script>
  <script>
    goog.require('goog.array');
    goog.require('goog.color');
    goog.require('goog.debug.DivConsole');
    goog.require('goog.debug.LogManager');
    goog.require('goog.events');
    goog.require('goog.log');
    goog.require('goog.object');
    goog.require('goog.ui.ColorMenuButton');
    goog.require('goog.ui.ColorMenuButtonRenderer');
    goog.require('goog.ui.Component.EventType');
    goog.require('goog.ui.CustomColorPalette');
    goog.require('goog.ui.Menu');
    goog.require('goog.ui.MenuItem');
    goog.require('goog.ui.Separator');
    goog.require('goog.ui.Toolbar');
    goog.require('goog.ui.ToolbarColorMenuButton');
    goog.require('goog.ui.ToolbarColorMenuButtonRenderer');
    goog.require('goog.ui.decorate');
  </script>
  <link rel="stylesheet" href="css/demo.css">
  <link rel="stylesheet" href="../css/menu.css">
  <link rel="stylesheet" href="../css/menuitem.css">
  <link rel="stylesheet" href="../css/menuseparator.css">
  <link rel="stylesheet" href="../css/menubutton.css">
  <link rel="stylesheet" href="../css/custombutton.css">
  <link rel="stylesheet" href="../css/palette.css">
  <link rel="stylesheet" href="../css/colorpalette.css">
  <link rel="stylesheet" href="../css/colormenubutton.css">
  <link rel="stylesheet" href="../css/toolbar.css">
  <style>
    /* Text color. */
    .goog-text-color {
      width: 15px;
      height: 13px;
      background: url(../images/toolbar_icons.gif) no-repeat -48px;
    }
    /* Background color. */
    .goog-bg-color {
      width: 15px;
      height: 13px;
      background: url(../images/toolbar_icons.gif) no-repeat -64px;
    }
  </style>
</head>
<body>
  <h2>goog.ui.ColorMenuButton Demo</h2>
  <table border="0" cellpadding="0" cellspacing="4" width="100%">
    <tbody>
      <tr valign="top">
        <td width="67%">
          <fieldset>
            <legend><strong>goog.ui.ColorMenuButton</strong> demo:</legend>
            <div id="cmb1">This button was created programmatically:&nbsp;</div>
            <br>
            <div>
              This button decorates a <strong>DIV</strong>:&nbsp;
              <div id="cmb2" class="goog-color-menu-button"
                  title="Decorated tooltip">Color</div>
            </div>
            <br>
            <div id="cmb3">This button has a custom color menu:&nbsp;</div>
          </fieldset>
          <br>
          <br>
          <fieldset>
            <legend>
              <strong>goog.ui.ToolbarColorMenuButtonRenderer</strong> demo:
            </legend>
            <div id="tcmb1">
              This toolbar button was created programmatically:&nbsp;
            </div>
            <br>
            <div>
              This toolbar button decorates a <strong>DIV</strong>:&nbsp;
              <div id="tcmb2" class="goog-toolbar-color-menu-button"
                  title="Decorated tooltip">Color</div>
            </div>
            <br>
            <div>
              This is what these would look like in an actual toolbar, with
              icons instead of text captions:
              <br>
              <br>
              <div id="tb" class="goog-toolbar">
                <div id="textColor" class="goog-toolbar-color-menu-button"
                    title="Text color">
                  <div class="goog-text-color"></div>
                </div>
                <div id="bgColor" class="goog-toolbar-color-menu-button"
                    title="Background color">
                  <div class="goog-bg-color"></div>
                </div>
              </div>
            </div>
            <br>
            <div dir="rtl">
              BiDi is all the rage these days
              <br>
              <br>
              <div id="tbRtl" class="goog-toolbar">
                <div id="textColorRtl" class="goog-toolbar-color-menu-button"
                    title="Text color">
                  <div class="goog-text-color"></div>
                </div>
                <div id="bgColorRtl" class="goog-toolbar-color-menu-button"
                    title="Background color">
                  <div class="goog-bg-color"></div>
                </div>
              </div>
            </div>
          </fieldset>
          <br>
          <br>
        </td>
        <td width="33%">
          <!-- Event log. -->
          <fieldset class="goog-debug-panel">
            <legend>Event Log</legend>
            <div id="log"></div>
          </fieldset>
        </td>
      </tr>
    </tbody>
  </table>
  <br>
  <div id="perf"></div>
  <script>
    var timer = goog.now();

    // Set up a logger.
    goog.debug.LogManager.getRoot().setLevel(goog.log.Level.ALL);
    var logger = goog.log.getLogger('demo');
    var logConsole = new goog.debug.DivConsole(goog.dom.getElement('log'));
    logConsole.setCapturing(true);

    var EVENTS = goog.object.getValues(goog.ui.Component.EventType);
    goog.log.fine(logger, 'Listening for: ' + EVENTS.join(', ') + '.');

    function logEvent(e) {
      var component = e.target;
      var caption = (typeof component.getCaption == 'function' &&
                     component.getCaption()) || component.getId();
      goog.log.info(logger, '"' + caption + '" dispatched: ' + e.type);
    }

    // Create the first ColorMenuButton programmatically.
    var cmb1 = new goog.ui.ColorMenuButton('Color');
    cmb1.setTooltip('Click to select color');
    cmb1.setSelectedColor('#FF0000');
    cmb1.render(goog.dom.getElement('cmb1'));
    goog.events.listen(cmb1, EVENTS, logEvent);

    // Decorate the second ColorMenuButton.
    var cmb2 = goog.ui.decorate(goog.dom.getElement('cmb2'));
    cmb2.setSelectedColor('#0000FF');
    goog.events.listen(cmb2, EVENTS, logEvent);

    // Create a custom palette and add it to a menu.
    var customColorPalette = new goog.ui.CustomColorPalette(
        ['#FE1', '#ACD', '#119']);
    customColorPalette.setSize(8);
    var customColorMenu = new goog.ui.Menu();
    customColorMenu.addItem(new goog.ui.MenuItem(
        'None', goog.ui.ColorMenuButton.NO_COLOR));
    customColorMenu.addItem(new goog.ui.Separator());
    customColorMenu.addItem(customColorPalette);

    // Create a ColorMenuButton with a custom menu.
    var cmb3 = new goog.ui.ColorMenuButton('Custom', customColorMenu);
    cmb3.setTooltip('Click to select a custom color');
    // Currently, the "add custom color" dialog created by CustomColorPalette
    // blurs the button unless we set it to non-focusable.
    cmb3.setSupportedState(goog.ui.Component.State.FOCUSED, false);
    cmb3.render(goog.dom.getElement('cmb3'));
    goog.events.listen(cmb3, EVENTS, logEvent);

    // Create the first toolbar-style ColorMenuButton programmatically.
    var tcmb1 = new goog.ui.ColorMenuButton('Color',
        goog.ui.ColorMenuButton.newColorMenu(),
        goog.ui.ToolbarColorMenuButtonRenderer.getInstance());
    tcmb1.render(goog.dom.getElement('tcmb1'));
    tcmb1.setTooltip('Click to select color');
    tcmb1.setSelectedColor('#FF00FF');
    goog.events.listen(tcmb1, EVENTS, logEvent);

    // Decorate the second toolbar-style ColorMenuButton.
    var tcmb2 = goog.ui.decorate(goog.dom.getElement('tcmb2'));
    tcmb2.setSelectedColor('#FFFF00');
    goog.events.listen(tcmb2, EVENTS, logEvent);

    // Decorate the sample toolbar.
    var tb = new goog.ui.Toolbar();
    tb.decorate(goog.dom.getElement('tb'));
    goog.events.listen(tb, EVENTS, logEvent);

    // Decorate the BiDi toolbar.
    var tbRtl = new goog.ui.Toolbar();
    tbRtl.decorate(goog.dom.getElement('tbRtl'));
    goog.events.listen(tbRtl, EVENTS, logEvent);

    // Perf and clean up
    goog.dom.setTextContent(goog.dom.getElement('perf'),
        (goog.now() - timer) + 'ms');
  </script>
</body>
</html>
